#ifndef LOOP_H
#define LOOP_H

#include "halfEdge.h"
#include "color.h"
#include "vector3d.h"
#include "vertex.h"
#include <iostream>
#include <set>

class Face;

class Loop{
    public:
        Loop(int = 0, Face * = NULL, HalfEdge * = NULL);
        ~Loop(){};

        int getId() const {return id;};
        void setId(int _id) {id = _id;};

        Face *getFace() const {return face;};
        void setFace(Face *_f) {face = _f;};

        HalfEdge *getHERing() const {return heRing;};
        void setHERing(HalfEdge *_he) {heRing = _he;};

//        void translate(const Vector3D &);
        std::set<Vertex *> getVertices();
        void setColor(const Color &_color);
        Vector3D normal() const;
        double area() const;

        void selectAdjacentVertex();
        void selectAdjacentEdge();
        void selectAdjacentFace();

    private:
        int id;
        Face *face;
        HalfEdge *heRing;
};

#endif

